package br.com.negocio;

import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import br.com.entidade.Funcionario;
import br.com.fachada.Fachada;
import br.com.logica.Logica;
import br.com.util.Mask;

public class AutenticarFuncionario implements Logica {

	private static Funcionario funcionario;

	@Override
	public void executa(HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		RequestDispatcher rd = null;

		String cpf = request.getParameter("cpf");
		String senha = request.getParameter("senha");

		String campos = Mask.camposFuncionarioLogin(cpf, senha);
		
		if(campos.equals("") || campos == null) {
			funcionario = Fachada.getInstancia().autenticarFuncionario(cpf,
					senha);
		} else {
			rd = request.getRequestDispatcher("loginFuncionario.jsp?erroCampos="+campos);
			rd.forward(request, response);
			return;
		}

		if (funcionario != null) {
			HttpSession sessao = request.getSession();
			sessao.removeAttribute("funcionario_autenticado");
			sessao.removeAttribute("gerente_autenticado");
			if (funcionario.getNivelDeAcesso() == 99) {
				sessao.setAttribute("gerente_autenticado", funcionario);
				sessao.setAttribute("funcionario_autenticado", funcionario);
			} else {
				sessao.setAttribute("funcionario_autenticado", funcionario);
			}
			rd = request.getRequestDispatcher("relatorioAnimal.jsp");
			rd.forward(request, response);
			return;
		} else {
			rd = request.getRequestDispatcher("loginFuncionario.jsp?naoCadastrado=true");
			rd.forward(request, response);
			return;
		}

	}

	public static Funcionario getFuncionario() {
		return funcionario;
	}

}
